<?php namespace system\model;

use hdphp\Model\Model;

class User extends Model{

	//数据表
	protected $table = "admin";

	//完整表名
	protected $full = false;

	//自动验证
	protected $validate=[
		//['字段名','验证方法','提示信息',验证条件,验证时间]
        ['username','required','请输入用户名',3,3],
        ['password','required','请输入密码',3,3],
        ['code','required','请输入验证码',3,3]
	];

	//自动完成
	protected $auto=[
		//['字段名','处理方法','方法类型',验证条件,验证时机]
	];

	//自动过滤
    protected $filter=[
        //[表单字段名,过滤条件,处理时间]
    ];

	//时间操作,需要表中存在created_at,updated_at字段
	protected $timestamps=false;


	//禁止插入的字段
	protected $denyInsertFields = [];

	//禁止更新的字段
	protected $denyUpdateFields = [];

	//前置方法 比如: _before_add 为添加前执行的方法
	protected function _before_add(){}
	protected function _before_delete(){}
	protected function _before_save(&$data){}

	protected function _after_add(){}
	protected function _after_delete(){}
	protected function _after_save(){}

//    登录方法
    public function login(){
//        执行自动验证
        if(!$this->create()) return false;
        //检验输入的验证码是否正确
        if(strtoupper($_POST['code'])!=$_SESSION['code']){
            $this->error='验证码错误';return false;
        }
//        验证输入的用户名是否正确
        if(!$data=$this->where('username',$_POST['username'])->first()){
            //p($data);exit;
            //first为获取一条数据一维数组，get为获取多条数据，是二维数组
            $this->error='用户名不存在';return false;
        }
        //密码是否正确
        if(md5($_POST['password'])!=$data['password']){
            //echo 1;exit;
            $this->error='密码错误';return false;
        }
        //到这说明用户名和密码都没有问题
        //写入session
        $_SESSION['admin']['uid']=$data['uid'];
        $_SESSION['admin']['username']=$data['username'];
        return true;
    }

    public function changePass(){
        $this->validate=[
            ['password','required','请输入原始密码',3,3],
            ['new_password','required','请输入新密码',3,3],
            ['confirm_password','confirm:new_password','两次输入的密码不一致',3,3],
        ];

        if(!$this->create()) return false;

        //判断原始密码是否正确
        $data=$this->where('uid',$_SESSION['admin']['uid'])->first();//获取数据库里面的数据
        if(md5($_POST['password'])!=$data['password']){
            $this->error='原始密码输入错误';return false;
        }
        //判断原始密码和新密码是否一样
        if($_POST['password']==$_POST['new_password']){
            $this->error='原始密码和新密码不能重复';return false;
        }
        //写入数据库
        $data=$this->where('uid',$_SESSION['admin']['uid'])->update(['password'=>Crypt::encrypt($_POST['new_password'])]);
        if(!$data){
            $this->error='操作失败，请稍后再试！';return false;
        }
        return true;

    }
}